package com.hanfb.mall.inventory.request;

import com.hanfb.mall.inventory.model.ProductInventory;
import com.hanfb.mall.inventory.service.ProductInventoryService;

/**
 * @作者： Hanfb
 * @描述：重新加载缓存
 * cache aside pattern
 * 1)删除缓存
 * 2)更新数据库
 *
 * @时间： 2020年10月11日
 */
public class ProductInventoryCacheReloadRequest implements Request {

    /**
     * 商品库存
     */
    private Integer productId;

    private boolean forceRefresh;

    /**
     * 商品库存service
     */
    private ProductInventoryService productInventoryService;

    public ProductInventoryCacheReloadRequest(Integer productId, ProductInventoryService productInventoryService,boolean forceRefresh) {
        this.productId = productId;
        this.productInventoryService=productInventoryService;
        this.forceRefresh=forceRefresh;
    }


    @Override
    public void executeProcess() {


        //1.从数据库中查询最新的商品库存数量
        ProductInventory productInventory = productInventoryService.findProductInventory(productId);

        System.out.println("===========日志============：接收到商品库存更新请求，商品id="+productInventory.getProductId()+",商品库存数量cnt="+productInventory.getInventoryCnt());
        //2.将最新的商品库存数量 刷新到redis 缓存中去
        productInventoryService.setProductInventoryCache(productInventory);

    }

    @Override
    public Integer getProductId() {
        return productId;
    }

    /**
     *是否强制刷新
     * @return
     */
    @Override
    public boolean isForceRefresh(){
        return forceRefresh;
    }


}
